﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using BLL.Validation;

namespace BLL
{
    public class KhoaHocManager : IValidator<KhoaHoc>
    {
        public static ActionResultAsList<KhoaHoc> LayDanhSachKhoaHoc()
        {
            var aResult = new ActionResultAsList<KhoaHoc>();
            try
            {
                aResult.Result = KhoaHocProvider.LayDanhSachKhoaHoc();
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<int> ThemKhoaHoc(KhoaHoc kh)
        {
            var aResult = new ActionResult<int>();
            try
            {
                aResult.Result = KhoaHocProvider.ThemKhoaHoc(kh);
                if (aResult.Result <= 0)
                {
                    aResult.Exceptions.Add(new Exception("Thêm mới khóa học không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<bool> XoaKhoaHoc(int maKH)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = KhoaHocProvider.XoaKhoaHoc(maKH);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Xóa thông tin khóa học không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<bool> CapNhatKhoaHoc(KhoaHoc kh)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = KhoaHocProvider.CapNhatKhoaHoc(kh);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Cập nhật thông tin khóa học không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }


        public ValidationResult Validate(KhoaHoc obj)
        {
            var vResult = new ValidationResult();

            if (string.IsNullOrEmpty(obj.TenKH.Trim()))
            {
                vResult.Message.Add("Tên khóa học phải khác chuỗi rỗng");
            }

            if (obj.ThoiGianBD.CompareTo(DateTime.Now) <= 0)
            {
                vResult.Message.Add("Thời gian bắt đầu khóa học phải sau thời gian hiện tại");
            }

            if (obj.ThoiGianKT.CompareTo(obj.ThoiGianBD) <= 0)
            {
                vResult.Message.Add("Thời gian kết thúc khóa học phải sau thời gian bắt đầu");
            }

            return vResult;
        }
    }
}
